package juegoPlantaVsZombies;

public class Zombie {
	private int resistencia;
	private int potencia;
	private String nombre;
	private String descripcion;
	private Boolean caminando;
	
	// Constructor
	public Zombie(){}
	public Zombie(int Pdef, int Patk, String nombre, String descripcion) {
		this.setResistencia(Pdef);
		this.setPotencia(Patk);
		this.setNombre(nombre);
		this.setDescripcion(descripcion);
	}

	// Getters y Setters
	
	public boolean sigoCaminando(){
		return caminando;
	}
	
	public void setCaminando(Boolean bool){
		this.caminando = bool;
	}

	public int getResistencia() {
		return resistencia;
	}

	public void setResistencia(int resistencia) {
		this.resistencia = resistencia;
	}

	public int getPotencia() {
		return potencia;
	}

	public void setPotencia(int potencia) {
		this.potencia = potencia;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	// Metodos

	public void descontarVida(int danioRecibido) {
		this.setResistencia(this.getResistencia() - danioRecibido);
		this.chequearEstadoZombie();
	}
	
	public void chequearEstadoZombie(){
		if (this.getResistencia() <= 0) {
			this.setCaminando(false);
		}
	}
	
	public void atacar(Planta unaPlanta){
		unaPlanta.descontarCapDef(this.getPotencia());
		if(! unaPlanta.estoyViva()) {
			System.out.println(this.getNombre()+" "+" ha derrotado a: "+unaPlanta.getNombre());
			 
		}
	}
	public void enfrentarFila(Fila fila) {
		
		while(fila.hayPlantasParaPelear() && this.sigoCaminando()){
			Planta p = fila.obtenerPrimeraPlanta();
			Celda c = fila.obtenerPrimeraCelda();
			this.atacar(p);
			if(p.estoyViva()){
				p.atacarZombie(this);
			}
			else {
				c.setEstaOcupado(false);
			}
		}
		
		/*
		for(Planta planta : fila.darPrimeraPlanta()){
			while(this.sigoCaminando()){
				this.atacar(planta);
				if(planta.estoyViva()){
					planta.atacarZombie(this);
				}
				else {break;}
			}
			if(!(this.sigoCaminando())){
				break;
			}
		}
		*/	
	}
		
}
	